home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / magnif1a / magnifie.frm next >
Text File  |  1999-09-12  |  6KB  |  153 lines

  1. VERSION 5.00
  2. Begin VB.Form Form1 
  3.    Caption         =   "MagNifier2"
  4.    ClientHeight    =   2445
  5.    ClientLeft      =   60
  6.    ClientTop       =   345
  7.    ClientWidth     =   2055
  8.    LinkTopic       =   "Form1"
  9.    ScaleHeight     =   163
  10.    ScaleMode       =   3  'Pixel
  11.    ScaleWidth      =   137
  12.    StartUpPosition =   3  'Windows Default
  13.    Begin VB.Timer Timer1 
  14.       Interval        =   50
  15.       Left            =   1080
  16.       Top             =   720
  17.    End
  18.    Begin VB.VScrollBar VScroll1 
  19.       Height          =   1575
  20.       LargeChange     =   5
  21.       Left            =   1560
  22.       Max             =   100
  23.       Min             =   1
  24.       TabIndex        =   1
  25.       Top             =   0
  26.       Value           =   100
  27.       Width           =   255
  28.    End
  29.    Begin VB.Label Label2 
  30.       Alignment       =   1  'Right Justify
  31.       Caption         =   "1"
  32.       Height          =   255
  33.       Left            =   1560
  34.       TabIndex        =   2
  35.       Top             =   2160
  36.       Width           =   495
  37.    End
  38.    Begin VB.Label Label1 
  39.       Caption         =   "Label1"
  40.       Height          =   255
  41.       Left            =   0
  42.       TabIndex        =   0
  43.       Top             =   2160
  44.       Width           =   1215
  45.    End
  46. End
  47. Attribute VB_Name = "Form1"
  48. Attribute VB_GlobalNameSpace = False
  49. Attribute VB_Creatable = False
  50. Attribute VB_PredeclaredId = True
  51. Attribute VB_Exposed = False
  52. 'MagNifier2 by oigres P. Email oigres@postmaster.co.uk
  53. 'Based on the C++ tool Zoomin (Lupe?)
  54. 'New features :Resizeable form, new resolution, bug fix 12/sept/99
  55. 'All code written by oigres P.
  56. 'indented by indenter5 from http://www.BMSLtd.co.uk by Stephen Bullen
  57. '
  58. Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
  59. Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
  60.  
  61. Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
  62. Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  63.  
  64. Private Declare Function GetDesktopWindow Lib "user32" () As Long
  65. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  66. Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
  67. Private Const HORZRES = 8
  68. Private Const VERTRES = 10
  69.  
  70.  
  71. Private Type POINTAPI
  72.     x As Long
  73.     y As Long
  74. End Type
  75. Private Type RECT
  76.     Left As Long
  77.     Top As Long
  78.     Right As Long
  79.     Bottom As Long
  80. End Type
  81. Const RDW_ERASE = &H4
  82. Const RDW_INVALIDATE = &H1
  83. Const SRCCOPY = &HCC0020
  84. Const WM_PAINT = &HF
  85.  
  86. Dim frmH As Long, magnify As Integer
  87.  
  88. Private Sub Form_Load()
  89.     Call VScroll1_Change
  90.     'SetCapture Form1.hwnd
  91. End Sub
  92.  
  93. Private Sub Form_Resize()
  94.     Form1.Cls 'clear rubbish between labels when resize
  95.     VScroll1.Left = Form1.ScaleWidth - VScroll1.Width
  96.     VScroll1.Height = Form1.ScaleHeight - Label1.Height
  97.     Label1.Top = Form1.ScaleHeight - Label1.Height
  98.     Label2.Left = Form1.ScaleWidth - Label2.Width
  99.     Label2.Top = Form1.ScaleHeight - Label2.Height
  100. End Sub
  101.  
  102. Private Sub Label1_Click()
  103. MsgBox "MagNifier2 by oigres P" & vbCrLf & _
  104. "Email: oigres@postmaster.co.uk", vbInformation, "MagNifier2"
  105. End Sub
  106.  
  107. Private Sub Timer1_Timer()
  108.     Dim cp As POINTAPI
  109.     GetCursorPos cp
  110.     Label1.Caption = cp.x & Space(6 - Len(CStr(cp.x))) & ":" & cp.y
  111.  
  112.     Dim dsDC As Long, lpPT As POINTAPI
  113.  
  114.  
  115.     dsDC = GetDC(0&)
  116.     'get screen width, height
  117.     hr = GetDeviceCaps(dsDC, HORZRES)
  118.     vr = GetDeviceCaps(dsDC, VERTRES)
  119.  
  120.     dshwnd = GetDesktopWindow()
  121.     '      vscroll1=1..100 so 1/100=.1; 100/100=1;New Resolution
  122.     Percent = VScroll1.Value / 100
  123.     lengthx = (Form1.ScaleWidth - VScroll1.Width) * Percent
  124.     lengthy = (Form1.ScaleHeight - Label1.Height) * Percent
  125.     'center image about mouse
  126.     offsetx = lengthx \ 2
  127.     offsety = lengthy \ 2
  128.     blitareax = Form1.ScaleWidth - VScroll1.Width 'actual area to blit to
  129.     blitareay = Form1.ScaleHeight - Label1.Height
  130.     'Debug.Print lengthx; lengthy; Percent; offsetx; offsety
  131.     'stop copying the screen off the edges <0 and  >horzres
  132.     If cp.x - offsetx >= 0 And cp.x + offsetx < hr Then '800=screen width
  133.         If cp.y - offsety >= 0 And cp.y + offsety < vr Then '600= screen height
  134.  
  135.             '                dest hdc ,destx,desty,width,height, sourceDC, source x,sourcey,sourcewidth,sourceheight,raster operation
  136.             ret = StretchBlt(Form1.hdc, 0, 0, blitareax, blitareay, dsDC, cp.x - offsetx, cp.y - offsety, lengthx, lengthy, SRCCOPY)
  137.         End If
  138.     End If
  139.     'Form1.Line (0, 0)-(Form1.ScaleWidth - VScroll1.Width, Form1.ScaleHeight - Label1.Height)
  140.     'Form1.Line (Form1.ScaleWidth - VScroll1.Width, 0)-(0, Form1.ScaleHeight - Label1.Height)
  141.     ReleaseDC dshwnd, dsDC 'previous bug not releasing memory
  142. End Sub
  143.  
  144. Private Sub VScroll1_Change()
  145.     'magnify = VScroll1.Value ;100 is max vscroll value
  146.     'output 2 decimal places
  147.     Label2.Caption = Format(100 / VScroll1.Value, "FIXED")
  148. End Sub
  149.  
  150. Private Sub VScroll1_Scroll()
  151.     Label2.Caption = Format(100 / VScroll1.Value, "FIXED")
  152. End Sub
  153.